package cn.b.sky.mes.cm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.enums.OperationType;
import cn.b.sky.mes.cm.model.ProcessOperation;
import cn.b.sky.mes.cm.model.ProcessOperationCapacity;

public interface ProcessOperationDao {
  /**
   * 
   * <strong>Title : selectProcessOperationByProcess<br></strong>
   * <strong>Description : </strong>获取工艺工序<br> 
   * <strong>Create on : 2015-9-29 下午4:47:37<br></strong>
   * <p>
   * @param siteCode
   * @param processCode
   * @param processRev
   * @return
   * List<ProcessOperation>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProcessOperation> selectProcessOperationByProcess(@Param("siteCode") String siteCode,
      @Param("processCode") String processCode, @Param("processRev") String processRev);

  /**
   * 
   * <strong>Title : getTempProcessOperation<br></strong>
   * <strong>Description : </strong>查询临时数据，根据创建人<br> 
   * <strong>Create on : 2015-12-8 下午4:26:59<br></strong>
   * <p>
   * @param pop
   * @return
   * List<ProcessOperation>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProcessOperation> getTempProcessOperation(ProcessOperation pop);

  /**
   * 
   * <strong>Title : selectProcessOperationById<br></strong>
   * <strong>Description : </strong>通过id查询<br> 
   * <strong>Create on : 2015-10-8 下午3:54:24<br></strong>
   * <p>
   * @param id
   * @return
   * ProcessOperation
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public ProcessOperation selectProcessOperationById(Integer id);

  /**
   * 
   * <strong>Title : insertProcessOperation<br></strong>
   * <strong>Description : </strong>保存工艺工序<br> 
   * <strong>Create on : 2015-9-29 下午4:48:07<br></strong>
   * <p>
   * @param processOperation
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertProcessOperation(ProcessOperation processOperation);

  /**
   * 
   * <strong>Title : deleteProcessOperationById<br></strong>
   * <strong>Description : </strong>批量删除工艺工序<br> 
   * <strong>Create on : 2015-9-29 下午4:48:42<br></strong>
   * <p>
   * @param id
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteProcessOperationById(Integer id);

  /**
   * 
   * <strong>Title : deleteProcessOperationByProcess<br></strong>
   * <strong>Description : </strong>删除工艺工序，在删除工艺时使用<br> 
   * <strong>Create on : 2015-9-29 下午4:49:06<br></strong>
   * <p>
   * @param siteCode
   * @param processCode
   * @param processRev
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteProcessOperationByProcess(@Param("siteCode") String siteCode,
      @Param("processCode") String processCode, @Param("processRev") String processRev);

  /**
   * 
   * <strong>Title : updateProcessOperation<br></strong>
   * <strong>Description : </strong>修改工艺工序<br> 
   * <strong>Create on : 2015-9-29 下午4:49:35<br></strong>
   * <p>
   * @param processOperation
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateProcessOperation(ProcessOperation processOperation);

  /**
   * 
   * <strong>Title : selectConfirmationProcessOperation<br></strong>
   * <strong>Description : </strong>获取确认点工序列表<br> 
   * <strong>Create on : 2016年8月17日 下午1:08:16<br></strong>
   * <p>
   * @param siteCode
   * @param productionOrderNum
   * @param operationTypeECode
   * @return
   * List<ProcessOperation>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProcessOperation> selectConfirmationProcessOperation(@Param("siteCode") String siteCode,
      @Param("productionOrderNum") String productionOrderNum, @Param("operationTypeECode") String operationTypeECode);

  /**
   * 
   * <strong>Title : deleteTempProcessOperation<br></strong>
   * <strong>Description : </strong>根据条件删除数据，主要用于删除临时数据<br> 
   * <strong>Create on : 2015-12-8 下午4:16:34<br></strong>
   * <p>
   * @param pop
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteTempProcessOperation(ProcessOperation pop);

  /**
   * 
   * <strong>Title : selectProcessOperationForDefectGraph<br></strong>
   * <strong>Description : </strong>缺陷图形化查询工艺工序接口<br> 
   * <strong>Create on : 2015年12月21日 下午2:03:56<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param processCode 工艺编号
   * @param processRev 工艺版本
   * @param operationTypeEcode 工艺类型
   * @param graphCollectFlag 图形检验标志
   * @return
   * List<ProcessOperation>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProcessOperation> selectProcessOperationForDefectGraph(@Param("siteCode") String siteCode,
      @Param("processCode") String processCode, @Param("processRev") String processRev,
      @Param("operationTypeEcode") OperationType operationTypeEcode,
      @Param("graphCollectFlag") Integer graphCollectFlag);

  public List<ProcessOperationCapacity> getStandardCapacity(@Param("siteCode") String siteCode,
      @Param("processOperationIds") Integer[] processOperationIds);

}
